package main

func main() {

}

/**
1. 一次性定时：

Timer：创建定时器，指定定时时长。定时到达后，系统会自动向定时器的成员 C 写入系统当前时间。 （对 chan 的写操作）

type Timer struct {
  C <-chan Time
  r runtimeTimer
}

常用操作：sleep()、NewTimer、After

读取 Timer.C 得到定时后的系统时间。并且完成一次 chan 的读操作。

time.After() 定时：

    指定定时时长，定时到达后。 系统会自动向定时器的成员写入系统当前时间。

    返回可读 chan 。 读取，可获得系统写入时间。

总结： Sleep、NewTimer、After —— 9994_time包

定时器的 停止、重置：

    1） 创建定时器 myTimer := time.NewTimer(2 * time.Second)

    2)  停止： myTimer.Stop   —— 将定时器归零。    <-myTimer.C 会阻塞

    3） 重置：myTimer.Reset(time.Second)


2. 周期定时：

type Ticker struct {
    C <-chan Time
    r runtimeTimer
}

1） 创建周期定时器 myTicker := time.NewTicker(time.Second)

    定时时长到达后，系统会自动向 Ticker 的 C 中写入系统当前时间。

    并且，每隔一个定时时长后，循环写入系统当前时间。

2） 在子 go 程中循环读取 C。获取系统写入的时间。

*/
